package dr.moteur;

import javax.vecmath.Vector2f;

public class TourPirate extends TourAbstraite {
	/*Constructeur*/
	public TourPirate(Vector2f position, int idJoueur, GameEngine gameEngine){
		super(position, idJoueur, gameEngine);
		this.nom="Tour pirate";
		this.cout=400;
		this.rayon=30.0f;
		this.portee=0;
		this.puissance=0;
		this.delaiDeTir=0;
		this.cadenceDeTir=0.01f;
		AmeliorationAbstraite effet=new EffetNormal();
		this.porteeEffetTourBonus=0;
		this.effetTourBonus=effet;
		this.porteeEffetAgentBonus=0;
		this.effetAgentBonus=effet;
		this.porteeEffetTourMalus=150;
		this.effetTourMalus=effet;
		this.porteeEffetAgentMalus=0;
		this.effetAgentMalus=effet;
		this.renommer();
		sauverEffet();
	}
	
	@Override
	public void rechercherCible(){
		float distanceTemp;
		float distanceFinale=9999;
		cibleTour=null;

		for(int i =0; i<gameEngine.getListeTours().size();i++){
			if(gameEngine.getListeTours().get(i).getIdJoueur()==idJoueur){
				if(gameEngine.getListeTours().get(i)!=this){
					if(gameEngine.getListeTours().get(i) instanceof TourLeurre || gameEngine.getListeTours().get(i) instanceof TourSuperLeurre){
						distanceTemp=(float) Math.pow(Math.pow(position.x-gameEngine.getListeTours().get(i).getPosition().x,2)+Math.pow(position.y-gameEngine.getListeTours().get(i).getPosition().y,2),0.5f);
						if(distanceTemp<=porteeEffetTourMalus && distanceTemp<distanceFinale) {
							distanceFinale=distanceTemp;
							cibleTour = gameEngine.getListeTours().get(i);
						}
					}
				}
			}
		}
	}
	
	/*fonction pour tirer sur un agent*/
	public void tirer() {
		delaiDeTir=cadenceDeTir;
		
		float distanceTemp;
		for(int i =0; i<gameEngine.getListeProjectiles().size();i++){
			//if(gameEngine.getListeProjectiles().get(i).getIdJoueur()!=idJoueur){
				distanceTemp=(float) Math.pow(Math.pow(position.x-gameEngine.getListeProjectiles().get(i).getPosition().x,2)+Math.pow(position.y-gameEngine.getListeProjectiles().get(i).getPosition().y,2),0.5f);
				if(distanceTemp<=porteeEffetTourMalus) {
					gameEngine.getListeProjectiles().get(i).setDestination(null);
					gameEngine.getListeProjectiles().get(i).setDestinationTour(this.cibleTour);
				}
			//}
		}
	}
}